iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
SideProject30

placeholder系列 第 18

30天打造線上多人桌遊網站-Day 18-PORO

  • 分享至 

  • xImage
  •  

今天開始先把 app/channels/chat_room_channel.rb 中操作遊戲的程式碼搬出來

用 PORO(Plain Old Ruby Object) 的方式,把 GameRoom 的 game_data 欄位組成物件,操作完再存回資料庫。

class Game
  GAME_INIT = 0
  GAME_PROCESSING = 1
  GAME_ENDING = 2
  GAME_COMPLETED = 3

  attr_accessor :name, :state, :game_room_id, :game_room

  def initialize(game_room)
    @game_room = game_room
    params = game_room.game_data || {}

    @name = params.dig :name
    @players = []
    @current_player = nil
    @deck = []
    @discards = []
    @state = GAME_INIT
    @fire_token = nil
    @info_token = nil
  end

  def save
    game_room.game_data ||= {}
    game_room.game_data['state'] = state
    game_room.save
  end
end

Demo url -> https://ironman2023-hanabi.zeabur.app/


上一篇
30天打造線上多人桌遊網站-Day 17-開始遊戲-3次失敗-遊戲結束
下一篇
30天打造線上多人桌遊網站-Day 19-加入RSpec
系列文
placeholder20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言